﻿<?php

/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
*/
/**
 * Description of AccountController
 *
 * @author hoangle
 */
class AccountController extends Zend_Controller_Action {
    
    private $sessionLogin;

//put your code here
    public function init() {
        //Check session
        $this->sessionLogin = new Zend_Session_Namespace('User');
    }
    
    public function indexAction() {
        $this->view->headTitle('Front End');
        // action body
        $this->view->show = "Zend Framwork";
    }

    /**
     * @desc Register Account
     */
    public function registerAction() {
        //Check session
        if ($this->sessionLogin->accountinfo) {
            $this->_redirect('/');
            exit;
        }
        //End
        //Check data submit
        if ($this->_request->isPost()) {
            $arrData = $this->_request->getPost();
            //Validate data input
            $this->_validateRegister($arrData, & $errorBool);
			
            //Insert data to DB
            if (!$errorBool) {
                $arrData['activationkey'] = md5($arrData['email'] . $arrData['birthday'] . time());
                $result = Service_Model::factory('Account', 'insertAccountInfo', $arrData, 'frontend');
				
                if ($result) {
                    $lastId = Service_Model::factory('Account', 'getLastInsertID', $arrData, 'frontend');
                    //Insert info balance to user
                    $arrDataBalance = array('userid' => $lastId['userid'], 'credit' => 0);
                    $result = Service_Model::factory('Balance', 'insertBalance', $arrDataBalance, 'frontend');
                    //Redirect acount
                    $this->_redirect('account/success');
                }
            }
        }
//End
    }

    /**
     * @desc Report insert account success
     */
    public function successAction() {
        $this->view->flag = true;
    }

    /**
     * @desc Thong tin tai khoan
     */
    public function infoAction() {
        $arrData['username'] = $this->sessionLogin->accountinfo['username'];
        $arrInfo = Service_Model::factory('Account', 'getAccountInfo', $arrData, 'frontend');
        $this->view->arrInfo = $arrInfo;
    }

    /**
     * @desc Get balance
     */
    public function balanceAction() {
        $arrData['userid'] = $this->sessionLogin->accountinfo['userid'];
        $arrInfo = Service_Model::factory('Balance', 'getBalanceByUser', $arrData, 'frontend');
        $this->view->arrInfo = $arrInfo;
    }

////////////////////////////////////////////////////////////////////////////
    //                          PRIVATE FUNC                                  //
    ////////////////////////////////////////////////////////////////////////////
    /**
     * @desc Check validate data input
     * @param <type> $arrData
     * @param <type> $errorBool
     */
    private function _validateRegister( & $arrData, & $errorBool = false) {
        //Check validate fullname
        if ($arrData['fullname']) {
            if (strlen($arrData['fullname']) > 100) {
                $errorBool = true;
                $this->view->errorFullname = 'Họ và tên vượt quá giới hạn 100 ký tự.';
            }
        }
        //End username

        //Check validate username
        if ($arrData['username']) {
            if (strlen($arrData['username']) > 100) {
                $errorBool = true;
                $this->view->errorUsername = 'Tên tài khoản vượt quá giới hạn 100 ký tự.';
            }
            else {
                $oValidUserNameObject = new Zend_Validate_Alnum();
                if (!$oValidUserNameObject->isValid($arrData['username'])) {
                    $errorBool = true;
                    $this->view->errorUsername = 'Tên tài khoản không được có những ký tự đặc biệt.';
                }
                else {
                    //Check username exist
					$result = Service_Model::factory('Account', 'checkExistAccount', $arrData, 'frontend');
                    //$result = Service_Model::factory('Account', 'getAccountInfo', $arrData, 'frontend');
                    if (!empty($result)) {
                        $errorBool = true;
                        $this->view->errorUsername = 'Tên tài khoản hoặc email hoặc số điện thoại đã được sử dụng.';
                    }
                }
            }
        }
        else {
            $errorBool = true;
            $this->view->errorUsername = 'Tên tài khoản được yêu cầu.';
        }
        //End username

        //Check validate password
        if ($arrData['password'] && $arrData['repassword']) {
            if (strlen($arrData['password']) < 6) {
                $errorBool = true;
                $this->view->errorPassword = 'Mật khẩu phải lớn hơn 6 ký tự.';
            }
            else {
                if ($arrData['password'] != $arrData['repassword']) {
                    $errorBool = true;
                    $this->view->errorPassword = 'Mật khẩu chưa chính xác.';
                }
            }
        }
        else {
            $errorBool = true;
            $this->view->errorPassword = 'Mật khẩu được yêu cầu.';
        }
        //End password

        //Check validate email
        if ($arrData['email']) {
            //Check Email
            $_options = array(
                'mx' => false,
                'deep' => false,
                'domain' => false,
                'hostname' => null,
                'messages' => array()
            );
            $oValidatemail = new Zend_Validate_EmailAddress($_options);
            if (!$oValidatemail->isValid($arrData['email'])) {
                $errorBool = true;
                $this->view->errorEmail = 'Email khong hop le';
            }
        }
        //End mail

        if ($arrData['dobday'] && $arrData['dobmonth'] && $arrData['dobyear']) {
            if (date('Y', time()) - $arrData['dobyear'] > 12) {
                $arrData['birthday'] = $arrData['dobyear'] . '-' . $arrData['dobmonth'] . '-' . $arrData['dobday'];
                $oValidDateObject = new Zend_Validate_Date();
                if ($oValidDateObject->isValid($arrData['birthday'])) {
                    $errorBool = true;
                    $this->view->errorBirthday = 'Ngày sinh không hợp lệ';
                }
            }
            else {
                $errorBool = true;
                $this->view->errorBirthday = 'Ngày sinh không hợp lệ';
            }
        }
        else {
            $errorBool = true;
            $this->view->errorBirthday = 'Ngày sinh không hợp lệ';
        }

        if ($errorBool) {
            $this->view->errorFlag = $errorBool;
        }
    }
//End func
}

?>
